Apparatus and method for rotating the display orientation of a captured image

ABSTRACT

The apparatus of the present invention preferably comprises an image sensor, an orientation sensor, a memory and a processing unit. The image sensor is used for generating captured image data. The orientation sensor is coupled to the image sensor, and is used for generating signals relating to the position of the image sensor. The memory, has an auto-rotate unit comprising program instructions for transforming the captured image data into rotated image data in response to the orientation sensor signals. The processing unit, executes program instructions stored in the memory, and is coupled to the image sensor, the orientation sensor and the memory. The method of the present invention preferably comprises the steps of: generating image data representative of an object with an image sensor; identifying an orientation of the image sensor relative to the object during the generating step; and selectively transferring the image data to an image processing unit in response to the identifying step.

Notice: More than one reissue application has been filed for the reissueof U.S. Pat. No. 6,011,585. This reissue application is a continuationof U.S. Pat. No. RE41,088 (application Ser. No. 11/206,279), which is areissue of U.S. Pat. No. RE38,896 (application Ser. No. 10/040,249).

This application relates to co-pending U.S. patent application Ser. No.08/355,031, entitled A System and Method For Generating a ContrastOverlay as a Focus Assist for An Imaging Device, filed on Dec. 13, 1994,by inventor Eric C. Anderson; and U.S. patent application Ser. No.08/384,012, entitled Apparatus and Method for Camera Image andOrientation Capture, filed on Feb. 6, 1995, by inventor Scott Fullam.The subject matter of the two applications described above is herebyincorporated by reference. These related applications are commonlyassigned to Apple Computer, Inc.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to an apparatus and method fororienting an image. More particularly, the present invention is anapparatus and method for rotating a captured image to an orientationcorresponding to an imaging subsystem's orientation at the time in whichthe image was captured.

2. Description of the Background Art

When a digital camera captures an image of an object, the camera's frameof reference with respect to the object produces a desired imageorientation. Two conventional image orientations exist, namely, alandscape orientation and a portrait orientation. Referring now to FIG.1A, a prior art graphical representation of an object in a landscapeorientation is shown, in which the image's width is greater than itsheight. Referring also now to FIG. 1B, a prior art graphicalrepresentation of the object in a portrait orientation is shown, inwhich the image's height is greater than its width.

In a digital camera, an image sensor is comprised of light-sensitivedevices, such as charge-coupled devices (CCD), that convert an opticalimage into a set of electrical signals. Referring now to FIG. 1C, aprior art image sensor is shown having a 480 row by 640 column matrix oflight collecting pixels. The image sensor is orientated within a body ofthe digital camera so that a first row of pixels (i.e. row r₁)corresponds to the bottom of an upright and level digital camera. Thisimage sensor orientation is required since as an optical image passesthrough a conventional camera lens it is inverted. The image sensor in acolor digital camera typically consists of an array of green (G), red(R) and blue (B) pixels. Alternative embodiments include sensorsdetecting cyan, magenta, yellow and green as is typically used in videocameras. Other image sensor configurations are also used. The pixelsthat comprise the image sensor are arranged into various patterns orformats. A common image sensor format is called a Bayer pattern. TheBayer pattern format is defined as a pixel pattern comprised of 50%green-light responsive pixels, 25% red-light responsive pixels and 25%blue-light responsive pixels arranged in alternating rows of “GRGRGR”and “BGBGBG,” as shown in FIG. 1C. Throughout this specification, “G”means “green,” “R” means “red,” and “B” means “blue.”

Once an image is captured by the digital camera, a set of pixel signalscorresponding to the image received by the pixels is processed by animage processing algorithm. Image processing routines are conventionallydesigned to process pixel signals line-by-line, conforming to a specificand unchanging pixel pattern format. Thus, image sensors manufacturedwith the Bayer pixel pattern format will be coupled to image processingroutines specifically designed to accept pixel signals in alternatingsequences of “GRGRGR” and “BGBGBG.” Due to possible imperfections in theouter rows and columns of pixels that make up the image sensor,conventional digital cameras sometimes have image sensors large enoughso that one or more lines of pixels at the sides of the image sensor canbe ignored.

Referring now to FIG. 1D, a prior art graphical representation is shownof the object as captured in the portrait orientation and output upon animage display 100. The image display 100 is typically a conventionalstand-alone, personal computer CRT having a top 102, a right side 104, aleft side 106 and a bottom 108.

As previously described, the image processing routines within digitalcameras are conventionally designed to process pixel signals on aline-by-line basis according to only one pixel pattern format. Thus,conventional digital cameras process images as if they were always in alandscape format. In the presentation of the landscape image of FIG. 1Aupon the image display, the “TOP” (i.e. “top portion”) of the landscapeimage would correspond to the top 102 of the FIG. 1D image display 100.Such an orientation for landscape images on the image display 100 isquite natural and is acceptable for ease of viewing the image. However,the presentation of the portrait image of FIG. 1B upon the image displayresults in the “TOP” of the portrait image corresponding to either theright side 104 or the left side 106 of the image display 100, dependingon how the user had rotated the digital camera. FIG. 1D explicitly showsthe case where the “TOP” of the portrait image corresponds to the rightside 104 of the image display 100. This “sideways” orientation forportrait images on the image display 100 is unacceptable and unnatural.This undesirable by-product of conventional digital cameras requiresthat the user rotate portrait images so that they are presented in amore natural and upright viewing angle on the image display 100. Itshould be noted that this problem also exists for digitized images fromconventional film cameras. Traditional rotation methods also have thedisadvantage of requiring two blocks of memory to rotate a stored image.

What is needed is an apparatus and method that efficiently andautomatically rotates a stored photographic image to correspond to theorientation in which the photographic image was captured.

SUMMARY OF THE INVENTION

The present invention is an apparatus and method for rotating thedisplay orientation of a captured image. The apparatus of the presentinvention preferably comprises an image sensor, an orientation sensor, amemory and a processing unit. The image sensor is used for capturingimage data. The orientation sensor is coupled to the image sensor, andis used for generating a portrait signal if the image sensor ispositioned in a portrait orientation relative to the object. The memory,has an auto-rotate unit comprising program instructions for transformingthe captured image data into rotated image data in response to theportrait signal. The processing unit, is used for executing programinstructions stored in the memory, and is coupled to the image sensor,the orientation sensor and the memory.

The method of the present invention preferably comprises the steps of:generating image data representative of an object with an image sensor;identifying an orientation of the image sensor relative to the objectduring the generating step; and selectively transferring the image datato an image processing unit in response to the identifying step.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A, is a prior art graphical representation of an object in alandscape orientation;

FIG. 1B, is a prior art graphical representation of the object in aportrait orientation;

FIG. 1C, is a prior art 480 row by 640 column image sensor;

FIG. 1D, is a prior art graphical representation of the object ascaptured in the portrait orientation and output upon an image display;

FIG. 2, is a block diagram of a preferred embodiment of an apparatus forrotating the display orientation of a captured image;

FIG. 3A, is a block diagram of a preferred embodiment of an imagingsubsystem of the present invention;

FIG. 3B, is a first graphical representation of a preferred embodimentof an image sensor disposed within the present invention;

FIG. 3C, is a second graphical representation of a preferred embodimentof the image sensor within the present invention;

FIG. 4A, is a block diagram of a preferred embodiment of a processingand storage subsystem of the present invention;

FIG. 4B, is a block diagram of a preferred embodiment of a volatilememory within the processing and storage sub-system;

FIG. 4C, is a block diagram of a preferred embodiment of a frame bufferdata structure within a frame buffer;

FIG. 4D, is a block diagram of the preferred embodiment of anon-volatile memory within the processing and storage subsystem;

FIG. 5A, is a graphical representation of a preferred embodiment ofportrait_left image data within the frame buffer data structure;

FIG. 5B, is a graphical representation of a preferred embodiment ofportrait_right image data within the frame buffer data structure;

FIG. 5C, is a graphical representation of a preferred embodiment oflandscape image data within the frame buffer data structure; and

FIGS. 6A, 6B, 6C and 6D, are a flowchart of a preferred method forrotating the display orientation of a captured image.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention is an apparatus and method for rotating thedisplay orientation of a captured image.

Referring now to FIG. 2, a block diagram is shown illustrating a camera200 for rotating a display orientation of a captured image. In thepreferred embodiment, the camera 200 is a digital camera, such as aQuickTake 150, by Apple Computer of Cupertino, Calif. The camera 200preferably comprises an imaging subsystem 204, a bus 206 and aprocessing and storage subsystem 208. Reflected light from an object 202is conventionally captured by the imaging subsystem 204 via a buttonpress or some other action. The captured image data is transferred overthe bus 206 to the processing and storage subsystem 208, which storesthe data in internal memory. The bus 206 also passes various status andcontrol signals between the imaging subsystem 204 and the processing andstorage subsystem 208, as will be further discussed below.

Referring now to FIG. 3A, a block diagram is shown illustrating theimaging subsystem 204 of the present invention. The imaging subsystem204 preferably comprises a lens 300 having an iris, an optical filter302, an image sensor 304, a timing generator 306, an analog signalprocessor (ASP) 308, an analog-to-digital (A/D) converter 310, a digitalsignal processor (DSP) 320, a right/left orientation sensor (RLOS) 324,an up/down orientation sensor (UDOS) 326 and one or more motors 312.U.S. patent application Ser. No. 08/355,031, entitled A System andMethod For Generating a Contrast Overlay as a Focus Assist For AnImaging Device, filed on Dec. 13, 1994 is incorporated herein byreference and provides a detailed discussion of the preferred elementsin the imaging subsystem 204, with the exception of the RLOS 324 and theUDOS 326. U.S. patent application Ser. No. 08/384,012, entitledApparatus and Method for Camera image and Orientation Capture, filed onFeb. 6, 1995 is incorporated herein by reference and provides a detaileddiscussion of various embodiments of the RLOS 324 and the UDOS 326,which are further discussed below. Briefly, the imaging subsystem 204captures an image of the object 202 via light impacting the image sensor304 along an optical path 314. The image sensor 304 in turn generates aset of pixel signals representative of the captured image data. Afterbeing processed by the ASP 308, the A/D converter 310 and the DSP 320;the captured image data passes over the bus 206 to the processing andstorage subsystem 208. The functions performed by the DSP 320 mayalternatively be performed in the processing and storage subsystem 208.

Referring now to FIG. 3B, a graphical representation is shownillustrating the image sensor 304 disposed within the camera 200. FIG.3B shows the camera 200 maintained in a landscape orientation whiledirectly facing the object 202. The image sensor 304 has a front 338 anda top 336, which are juxtaposed with a front 334 and a bottom 332 of thecamera 200 respectively. The front side 338 of the image sensor 304comprises light-sensitive pixels, which capture an image received alongthe optical path 314 and through the lens 300 mounted upon the camera200. It should be noted that the image recorded by the image sensor 304is inverted relative to the object by the lens 300. The front 338 of theimage sensor 304 preferably forms a planar surface as shown inperspective in FIG. 3B. When the image sensor 304 is oriented as shownin FIG. 3B, a landscape image of the object 202 is captured. When thecamera 200 is rotated either 90° clockwise or 90° counterclockwise aboutthe x-axis, a portrait image of the object 202 is captured.

Referring now to FIG. 3C, a graphical representation is shownillustrating the image sensor 304, which has the top 336, a right side342, a left side 340 and a bottom 344. The image sensor 304 is comprisedof a plurality of pixels arranged in an i-row by j-column array. In thepreferred embodiment, the pixels are arranged in a Bayer pattern format.Alternatively the present invention may be applied to image sensors ofvarious sizes and image processing routines designed to process pixelsignals arranged in patterns or formats different from the Bayerpattern.

As stated above, the RLOS 324 (i.e. the right/left orientation sensor)and the UDOS 326 (i.e. the up/down orientation sensor) are disposedwithin the imaging subsystem 204. Both the RLOS 324 and the UDOS 326 arephysically coupled to the image sensor 304 and electrically coupled tothe DSP 320. The RLOS 324 monitors whether the camera 200 is in alandscape orientation or a portrait orientation. If the camera 200 is ina portrait orientation, the RLOS 324 identifies whether the camera 200has been rotated clockwise or counterclockwise, as viewed from the rearof the camera 200. In response to such camera 200 rotation, the RLOS 324generates and transmits either a landscape signal, a portrait_leftsignal or a portrait_right signal to the DSP 320. More specifically, ifthe camera 200 is held in the landscape orientation shown in FIGS. 1Aand 3B, the RLOS 324 generates the landscape signal, since the top 336of the image sensor 304 corresponds to the “TOP” of the object 202.However, if the camera 200 is rotated 90° clockwise about the x-axis, asviewed from the rear of the camera 200 shown in FIG. 3B, the RLOS 324generates the portrait_right signal, since now the right side 342 of theimage sensor 304 corresponds to the “TOP” of the object 202. And, if thecamera 200 is rotated 90° counter-clockwise about the x-axis, as viewedfrom the rear of the camera 200, the RLOS 324 generates theportrait_left signal, since now the left side 340 of the image sensor304 corresponds to the “TOP” of the object 202.

The UDOS 326 monitors whether the camera 200 is in either a levelorientation or an off-level orientation. In response to a movement ofthe camera 200, the UDOS 324 generates and transmits either a levelsignal or an off-level signal to the DSP 320. Specifically, if thecamera 200 is held in the landscape orientation shown in FIG. 3B, theUDOS 324 generates the level signal, since the front 334 of the camera200 directly faces the object 202. If the camera 200 is rotated morethan 45° clockwise or counter-clockwise about the y-axis, shown in FIG.3B, the UDOS 324 preferably generates the off-level signal, since thefront 334 of the camera 200 now points either above or below the x-yplane. Alternative embodiments of the present invention can change thespecific measure of rotation necessary to generate the off-level signalfrom 45° to any number from 0° to 180°.

Both the RLOS 324 and UDOS 326 sensors are preferably identical in theirstructure and function. Their placement relative to the image sensor 304determines whether the signal generated by the orientation sensor is oneof the RLOS 324 signals or the UDOS 326 signals. The DSP 320 receivesboth the RLOS 324 and the UDOS 326 signals and transmits them to theprocessing and storage subsystem 208 over the bus 206. While thepreferred embodiment of the present invention incorporates theorientation sensors 324, 326, those skilled in the art will recognizethat the orientation sensors 324, 326 are not required to practice thepresent invention, if the processing and storage subsystem 208 promptsthe photographer for the camera's 200 orientation at the time an imageis captured. Alternatively, an embodiment using only the RLOS 324enables practicing of the present invention, but this alternativeembodiment results in loss of the off-level signal. However, such anembodiment using only the RLOS 324 is still useful for most applicationsrequiring only landscape and portrait orientation using an approximatelylevel camera 200. A further alternative embodiment includes an RLOS 324which only generates the landscape, portrait_left, or portrait_rightsignals if the camera 200 is within a predetermined level range.

Referring now to FIG. 4A, a block diagram is shown illustrating theprocessing and storage subsystem 208 of the present invention. Theprocessing and storage subsystem 208 comprises a buffer 400, aprocessing unit 404, a non-volatile memory 406, an input device 408, avolatile memory 410 and an I/O interface 414, coupled together via aninternal bus 402. In the preferred embodiment, the processing andstorage subsystem 208 is conventionally embedded as part of the camera200. Alternatively, the processing and storage subsystem 208 may be adesktop type computer.

The buffer 400 is preferably a first-in, first-out buffer fortemporarily holding the captured image data and the imaging subsystem204 control signals passed between the DSP 320 and the processing andstorage subsystem 208. The buffer 400 has data lines that are coupled toboth the bus 206 and the internal bus 402. The processing unit 404executes programming instructions stored in the non-volatile memory 406and the volatile memory 410 to perform various operations. Thenon-volatile memory 406 stores a set of computer readable programinstructions for controlling how the processing unit 404 accesses,transforms and outputs the image data, as described in detail below withreference to FIG. 4D. While the non-volatile memory 406 is preferably aRead Only Memory (ROM), alternatively the non-volatile memory 406 couldbe replaced with a functionally equivalent computer useable medium suchas: a compact disk and drive; a floppy disk and drive; or a memory card.Additional details on the function and operation of both thenon-volatile memory 406 and the volatile memory 410 are provided belowwith reference to FIGS. 4B and 4D.

The input device 408 is preferably a series of control buttons,responsive to user inputs, which generates signals that are translatedby the processing unit 404 into control signals to adjust the focus andother operating parameters of the imaging subsystem 204. As mentionedabove, while the preferred embodiment of the camera 200 incorporates theRLOS 324 and UDOS 326, an alternative embodiment of the presentinvention prompts the user to manually input, via the input device 408,the imaging subsystem's 204 orientation at the time the captured imagedata was generated. Other alternative embodiments incorporating theautomatic RLOS 324 and UDOS 326 sensors could provide for an overridefunction that instructs the processing and storage subsystem 208 toignore the orientation signals generated by the RLOS 324 and UDOS 326sensors, enabling the user to retain full manual control over the finalorientation of the captured image data on the image display 100. The I/OInterface 414 is coupled to the internal bus 402 and has an externalport connector for coupling the processing and storage subsystem 208with a host computer (not shown) for downloading image data stored inthe volatile memory 410 and thus freeing up room in the volatile memory410 for additional sets of processed image data. In the second andalternative embodiment discussed above where the processing and storagesubsystem 208 is a desktop type computer, the input device 408 will alsoinclude a keyboard and mouse type controller.

Referring now to FIG. 4B, a block diagram is shown illustrating avolatile memory 410 within the processing and storage subsystem 208. Thevolatile memory 410 contains a frame buffer 416, working memory 418 andstorage memory 420 coupled to the internal bus 402. The volatile memory410 is preferably a Random Access Memory (RAM).

The frame buffer 416 is preferably comprised of a dedicated space ofcontiguous memory comprising an i-row by j-column area for storing imagedata. There is preferably a constant one-to-one correspondence betweenthe pixels comprising the image sensor 304 array and the storagelocations within the frame buffer 416 area. Alternatively, the pixelsignals from the image sensor 304 array could be stored within the framebuffer 416 in a non-contiguous (i.e. sectored) memory format, as iscommonly known in the art. In the preferred embodiment, i and j are setequivalent to the size of the image sensor 304. Since the preferredimage sensor 304 is a 481 by 641 array, i is set to 481 and j is set to641. In alternative embodiments where the image sensor 304 is only a 480by 640 array, the frame buffer 416 will still preferably be a 481 by 641array since, as is discussed below, an extra row and column is generatedby the processing and storage subsystem 208.

The working memory 418 preferably provides a temporary space for storingdata received from the input device 408 and for data generated by theprocessing unit 404. The working memory 418 also contains additionalmemory for storing the RLOS 324 and UDOS 326 signals at the time theimage data was captured by the image sensor 304; and additionalinformation conventionally associated with the capture process, such asexposure and focus settings, time and date, statistical data, and thepresence of any defective pixels, rows or columns within the imagesensor 304.

The storage memory 420 preferably provides space for storing multiplesets of image data, until the images are off-loaded from the camera 200via the I/O interface 414. The storage memory 420 sets a maximum imagedata holding capacity of the camera 200. Alternatively, additionalmemory cards could also be coupled to the internal bus 402, providingeven more image data storage capability. Such an additional memory cardcould be a non-volatile flash memory card.

Referring now to FIG. 4C, a block diagram is shown illustrating a memorymap of a volatile memory data structure 417 within the volatile memory410. The volatile memory data structure 417 comprises an image datafield 419 for storing the captured image data, an RLOS signal data field421 for storing the RLOS 324 signal, an UDOS signal data field 423 forstoring the UDOS 326 signal and a miscellaneous data field 425 forstoring the exposure and focus settings, time and date, statisticaldata, and the presence of any defective image sensor 304 pixels, rows orcolumns. The interactions of each of all these data fields 419, 421,423, 425 with the camera 200 is described in detail below.

Referring now to FIG. 4D, a block diagram is shown illustrating thenon-volatile memory 406 within the processing and storage subsystem 208.The non-volatile memory 406 comprises an auto-rotate unit 422, an imageprocessing unit 424, an image capture unit 428 and an operating systemunit 426.

The image capture unit 428 controls the imaging sub-system's 204 focusand aperture settings; captures the image data; routes the image datainto the frame buffer 416; routes the exposure and focus settings, timeand date, statistical data, and the presence of any defective imagesensor 304 pixels, rows or columns into the miscellaneous data field425; generates additional rows and columns of image data within theframe buffer 416 if required; monitors the RLOS 324 and UDOS 326; andsets the RLOS signal 421 data field and the UDOS signal 423 data fieldbased on the RLOS 324 and UDOS 326 outputs. In the preferred embodimentthe image capture unit 428 corrects any pixel defects within the imagesensor 304 using the information stored in the miscellaneous data field425 before passing the image data to the auto-rotate unit 422. In analternative embodiment, image processing unit 424 corrects any pixeldefects within the image sensor 304 using the information stored in themiscellaneous data field 425 after receiving the image data from theauto-rotate unit 422. In this alternative embodiment, the defectiveimage sensor 304 pixel information must also be rotated by theauto-rotate unit 422 in the same manner as for the image data, describedbelow.

The image capture unit 428 preferably is designed in two embodiments, ahardware embodiment and a software embodiment; however, the hardwareembodiment is preferred.

Hardware Embodiment

In the hardware embodiment, the image sensor 304 is comprised of atleast one more extra row and column than the image processing unit 424is designed to process. Thus, if the image processing unit 424 isdesigned to process a 480 by 640 pixel signal array, then the imagesensor 304 must be at least a 481 by 641 pixel array (i.e. “i” is 481and “j” is 641 in FIG. 3C). The discussion that follows on theauto-rotate unit 422 makes clear when and why the additional row andcolumn is required.

Software Embodiment

The software embodiment is required when the image sensor 304 lacks anyadditional rows and columns beyond those that the image processing unit424 is designed to process. For Bayer pattern image processing, theimage capture unit 428 must generate an additional row and column ofimage data. (For non-Bayer pattern image data, a straightforwardrotation is performed as is described below and an additional row andcolumn is not required.) Thus, for example, if the image sensor 304 iscomprised of a 480 by 640 pixel array and the image processing unit 424is designed to process a 480 by 640 array, then the image capture unit428 must generate an additional row and column of pixels. In thepreferred software embodiment, the additional row generated correspondsto row r_(i) (i.e. GRGRGR) in FIG. 3C and the additional columngenerated corresponds to column c_(j) (i.e. GBGBGB) in FIG. 3C. Theadditional row and column may be generated in any number of ways,including: setting the additional pixels to black; creating a duplicateof a nearby line of pixels with the same pixel pattern (i.e. two pixellines over); generating a duplicate of the nearest color (i.e. G's wouldbe copied from one pixel line over while R's or B's would be copied fromtwo pixel lines over); setting the pixel values based on a filteringalgorithm which looks at a number of nearby pixels; or setting theadditional row and column of pixels randomly.

The auto-rotate unit 422 transforms the captured image data into therotated image data for further processing by the image processing unit424. The image processing unit 424 receives the rotated image data fromthe auto-rotate unit 422 and transforms it into processed image data,ready for saving in the storage memory 420. The operating system unit426 is coupled to the internal bus 402 and preferably comprises aconventional set of program instructions for controlling theconfiguration and usage of the computer's 208 hardware resources. Theoperations performed by the auto-rotate unit 422 and the imageprocessing unit 424 are described in more detail below.

Referring now to FIGS. 5A, 5B and 5C, a graphical representation isshown in FIG. 5A illustrating portrait_left image data within the framebuffer 416; a graphical representation is shown in FIG. 5B illustratingportrait_right image data within the frame buffer 416; and a graphicalrepresentation is shown in FIG. 5C illustrating landscape image datawithin the frame buffer 416. FIGS. 5A, 5B and 5C all show the same imagedata 419 within the frame buffer data structure 417 filled withdifferent sets of captured image data and graphically positioned in theorientation in which the camera 200 was held at the time the capturedimage data was generated. As will be discussed in detail below, theshaded areas represent a subset of pixel signals within the image datafield 419 that the auto-rotate unit 422 selects to be sent to the imageprocessing unit 424 as the rotated image data.

The auto-rotate unit 422 preferably comprises program instructionsstored in the non-volatile memory 406 that are executed by theprocessing unit 404. The auto-rotate unit 422 controls the flow of databetween the frame buffer 416 and the image processing unit 424. First,the auto-rotation unit 422 accesses the RLOS signal 421 data field andUDOS signal 423 data field from the frame buffer data structure 417;and, based on this orientation data, selects either a portrait_leftspooling routine, a portrait_right spooling routine or a landscapespooling routine. The spooling routines select-out and feed the capturedimage data stored in the image data field 419 to the image processingunit 424. “Spooling” is here defined as a routine for transferring datafrom one unit or device to a second unit or device. It is through thesespooling routines that the auto-rotate unit 422 transforms the capturedimage data into the rotated image data. While the effect of theauto-rotate unit 422 is only described below with reference to thecaptured image data, some of the additional information stored in theworking memory 418 (such as the location of any defective pixels, rowsor columns within the image sensor 304) will also be rotated, asdescribed above. This additional information is then used by the imageprocessing unit 424. Alternatively, a defective pixel correctionalgorithm can be applied to the image data prior to rotation of theimage data. Each of the different spooling routines are described indetail below.

First, the auto-rotate unit 422 determines the image sensor's 304orientation at the time the image was captured, by accessing the RLOSsignal 421 and UDOS signal 423 data fields. Next, if the RLOS signal 421data field contains a portrait_left signal and the UDOS signal 423 datafield contains a level signal, the auto-rotate unit 422 selects theportrait_left spooling routine. However, if the RLOS signal 421 datafield contains a portrait_right signal and the UDOS signal 423 datafield contains a level signal, the auto-rotate unit 422 selects theportrait_right spooling routine. Lastly, if the RLOS signal 421 datafield contains a landscape signal and the UDOS signal 423 data fieldcontains a level signal, or whenever the UDOS signal 423 data fieldcontains an off-level signal, regardless of what the RLOS signal 421data field contains, the auto-rotate unit 422 selects the landscapespooling routine. Each of the three spooling routines within theauto-rotate unit 422 are now discussed below.

If the portrait_left spooling routine is selected, the auto-rotate unit422 interprets the captured image data within the image data field 419as shown in FIG. 5A. FIG. 5A shows an i-row by j-column set of capturedimage data in a portrait_left orientation. As shown, the “TOP” of theportrait_left orientation corresponds to column c₂. Note that the “row”and “column” designations defined for the image sensor 304 in FIG. 3Care retained for clarity in FIGS. 5A, 5B and 5C even though the camerahas been rotated into the portrait_left orientation. Conventional imageprocessing units are designed to receive image data in a constant pixelpattern format. Using the Bayer pattern format (assumed for the purposesof this discussion) the image processing unit 424 must receive the imagedata from the image data field 419 starting with a “GRGRGR” line andfollowed by a “BGBGBG” line, in an alternating line-by-line pattern.Therefore, a subset of the image data field 419 is selected by theportrait_left spooling routine, as shown by the shaded gray area in FIG.5A, to be sent to the image processing unit 424. The shaded area of FIG.5A is defined from rows r₁ to r_(i−1), and from columns c₂ to c_(j). Thetotal array size of the shaded area is therefore comprised of i−1 numberof rows and j−1 number of columns. Next, the portrait_left spoolingroutine defines the shaded area of c₂ as the top line of the rotatedimage data and configures the image processing unit 424 to accept a linelength of i−1 pixels. The portrait_left spooling routine first transfersthe pixel signal in the image data field 419 location (R_(i−1), c₂) tothe image processing unit 424. Decrementing the row number by one, theportrait_left spooling routine next transfers the pixel signal atlocation (r_(i−2), c₂) to the image processing unit 424, and so on untilpixel (r₁, c₂) has been transferred. The portrait_left spooling routinethen increments the column by one to c₃ and resets the row to r_(i−1) inpreparation for spooling the next line of pixel signals (having a lengthof i−1) to the image processing unit 424, in the same manner as thefirst line (having a length of i−1) was spooled. The portrait_leftspooling routine continues to increment the column number and spool thenext line of pixel signals (having a length of i−1) to the imageprocessing unit 424 until column c_(j) has been spooled. The pixelsignals within either row r_(i) or column c₁ are not sent to the imageprocessing unit 424 since the image processing unit 424 is preferablydesigned to process only an i−1 by j−1 array of pixel signals. As aresult of this spooling sequence, the entire set of pixel signalsrepresenting a portrait_left image has been transferred to the imageprocessing unit 424. Furthermore, due to this specific spoolingsequence, the portrait left image will be displayed on the image display100 so that the “TOP” of the portrait_left image corresponds to the top102 of the image display 100.

If the portrait_right spooling routine is selected, the auto-rotate unit422 interprets the captured image data within the image data field 419as shown in FIG. 5B. FIG. 5B shows an i-row by j-column set of capturedimage data in a portrait_right orientation. As shown, the “TOP” of theportrait_right orientation corresponds to column c_(j−1). A subset ofthe image data field 419 is selected by the portrait_right spoolingroutine, as shown by the shaded gray area in FIG. 5B, to be sent to theimage processing unit 424. The shaded area of FIG. 5B is defined fromrows r₂ to r_(i), and from columns c₁ to c_(j−1). The total array sizeof the shaded area is therefore comprised of i−1 number of rows and j−1number of columns. Next, the portrait_right spooling routine defines theshaded area of c_(j−1) as the top line of the rotated image data andconfigures the image processing unit 424 for a line length of i−1pixels. The portrait_right spooling routine first transfers the pixelsignal in the image data field 419 location (r₂, c_(j−1)) to the imageprocessing unit 424. Incrementing the row number by one, theportrait_right spooling routine next transfers the pixel signal atlocation (r₃, c_(j−1)) to the image processing unit 424, and so on untilpixel (r_(i), c_(j−1)) has been transferred. The portrait_right spoolingroutine then decrements the column by one to c_(j−2) and resets the rowto r₂ in preparation for spooling the next line of pixel signals (havinga length of i−1) to the image processing unit 424, in the same manner asthe first line (having a length of i−1) was spooled. The portrait_rightspooling routine continues to decrement the column number and spool thenext line of pixel signals (having a length of i−1) to the imageprocessing unit 424 until column c₁ has been spooled. Thus, the entireset of pixel signals representing a portrait_right image has beentransferred to the image processing unit 424. As a result of thisspecific spooling sequence, the portrait_right image will be displayedon the image display 100 so that the “TOP” of the portrait_right imagecorresponds to the top 102 of the image display 100.

If the landscape spooling routine is selected, the auto-rotate unit 422interprets the captured image data within the image data field 419 asshown in FIG. 5C. FIG. 5C shows an i-row by j-column set of capturedimage data in a landscape orientation. As shown, the “TOP” of thelandscape orientation corresponds to r₁. A subset of the image datafield 419 is selected by the landscape spooling routine, as shown by theshaded gray area in FIG. 5C, to be sent to the image processing unit424. The shaded area of FIG. 5C is defined from rows r₁ to r_(i−1), andfrom columns c₁ to c_(j−1). The total array size of the shaded area istherefore comprised of i−1 number of rows and j−1 number of columns.Next, the landscape spooling routine defines the shaded area of r₁ asthe top line of the rotated image data and configures the imageprocessing unit 424 for a line length of j−1 pixels. Alternatively, theshaded gray area representing the rotated image data could be positionedover different sets of pixel signals within the image data field 419,again subject to the constraint that the top line begin with the“GRGRGR” pattern. The landscape spooling routine first transfers thepixel signal in the image data field 419 location (r₁, c₁) to the imageprocessing unit 424. Incrementing the column number by one, thelandscape spooling routine next transfers the pixel signal at location(r₁, c₂) to the image processing unit 424, and so on until pixel (r₁,c_(j−1)) has been transferred. The landscape spooling routine thenincrements the row by one to r₂ and resets the column to c₁ inpreparation for spooling the next line of pixel signals (having a lengthof j−1) to the image processing unit 424, in the same manner as thefirst line (having a length of j−1) was spooled. The landscape spoolingroutine continues to increment the row number and spool the next line ofpixel signals (having a length of j−1) to the image processing unit 424until row r_(i−1) has been spooled. Thus, the entire set of pixelsignals representing a landscape image has been transferred to the imageprocessing unit 424. As a result of this specific spooling sequence, thelandscape image will be displayed on the image display 100 so that the“TOP” of the landscape image corresponds to the top 102 of the imagedisplay 100.

Also as introduced above, the image processing unit 424 preferablycomprises program instructions stored in the non-volatile memory 406that are executed using the processing unit 404. The image processingunit 424 receives the rotated image data from the auto-rotate unit 422,performs conventional image processing operations (such as whitebalancing, reconstruction, color correction, gamma correction,sharpening and compression) on the rotated image data; generatesprocessed image data; and either saves the processed image data to thestorage memory 420 or outputs it to a host computer (not shown) via theI/O interface 414. As was discussed above, the image processing unit 424is preferably implemented such that it must receive all the image dataspooled from the frame buffer 416 starting with a “GRGRGR” line followedby a “BGBGBG” line in an alternating line-by-line pattern. This is theimage processing unit's 424 design limitation which drives theauto-rotate unit's 422 particular pixel selection routines describedabove. Alternatively, a different image processing unit 424 could beimplemented which requires that the image data be spooled from the framebuffer 416 starting with a “GBGBGB” line followed by a “RGRGRG” line orany combination of the Bayer pattern.

Those skilled in the art will also recognize that alternate embodimentsof the present invention that do not use the Bayer pattern may still usethe teachings of present invention to rotate their image data. In suchalternative embodiments the auto-rotate unit 422 performs astraightforward rotation of the image data since such alternative imageprocessing units 424 may accept pixel signals in any orientation. Thusfor the straightforward rotation where the shaded gray area of FIG. 5Crepresents the image data, the portrait_left spooling routine wouldstart with pixel signal r_(i−1), c₁), spool column c₁, increment thecolumn to c₂, spool column c₂ and so on; the portrait_right spoolingroutine would start with pixel signal (r₁, c_(j−1)), spool columnc_(j−1), decrement the column to c_(j−2), spool column c_(j−2) and soon; and the landscape spooling routine would start with pixel signal(r₁, c₁), spool row r₁, increment the row to r₂, spool row r₂ and so on.In all three cases above, the extra or provided row r_(i) and extra orprovided column c_(j) would not be transferred.

Referring now to FIGS. 6A, 6B, 6C and 6D, a flowchart of a preferredmethod for rotating the display orientation of a captured image isshown. The method begins in FIG. 6A with step 600 where the imagecapture unit 428 captures a set of image data and a set of image sensor304 orientation data approximately simultaneously. The RLOS 421 and UDOS423 orientation signals are recorded when the image data capture occursin order to insure that the orientation sensor information accuratelyreflects the actual position of the image sensor 304. In step 602, theimage capture unit 428 transfers the captured image data and the imagesensor 304 orientation data into the volatile memory 410. In Step 603,the image capture unit 428 generates an additional row and column ofimage data if the captured image data does not already include an extrarow and column of image data. In Step 604, the auto-rotate unit 422determines the orientation of the captured image data. If in step 606the captured image data is in a portrait_left orientation, the methodproceeds to step 612, otherwise the method continues to step 608. If instep 608 the captured image data is in a portrait_right orientation, themethod proceeds to step 628, otherwise the method proceeds to step 644.

In step 612 of FIG. 6B, the auto-rotate unit 422 configures the imageprocessing unit 424 to accept an image data line length corresponding toa portrait_left image. In step 614, the auto-rotation unit 422initializes a variable named “column” stored in the working memory 418to a first pixel column (i.e. to column c₂), within the image data field419, required by the image processing unit 424. In step 616, theauto-rotation unit 422 initializes a variable named “row” stored in theworking memory 418 to a row (i.e. to row r_(i−1)) within the image datafield 419 containing a first pixel color required by the imageprocessing unit 424. Next, in step 618, the auto-rotate unit 422transfers the captured image data in the image data field 419 location(r_(row), c_(column)) to the image processing unit 424. In step 620, theauto-rotate unit 422 decrements “row” to a row containing a next pixelcolor required by the image processing unit 424. In step 622, if “lastrow” has been transferred, the method proceeds to step 623, otherwisethe method returns to step 618. In the preferred embodiment “last row”is “r₁” as shown in FIG. 5A. When “last row” has been transferred instep 622, an entire line of portrait_left image data has beentransferred to the image processing unit 424. In step 623 the imageprocessing unit 424 performs any required image processing on thetransferred image data. Step 624 then increments “column” to a nextpixel column required by the image processing unit 424. Finally, if instep 626 “last column” has not yet been transferred the method returnsto step 616, otherwise the method ends. In the preferred embodiment“last column” is “c_(j),” as shown in FIG. 5A.

In step 628 of FIG. 6C, the auto-rotate unit 422 configures the imageprocessing unit 424 to accept an image data line length corresponding toa portrait_right image. In step 630, the auto-rotation unit 422initializes a variable named “column” stored in the working memory 418to a first pixel column (i.e. to column c_(j−1)), within the image datafield 419, required by the image processing unit 424. In step 632, theauto-rotation unit 422 initializes a variable named “row” stored in theworking memory 418 to a row (i.e. to row r₂) within the image data field419 containing a first pixel color required by the image processing unit424. Next, in step 634, the auto-rotate unit 422 transfers the capturedimage data in the image data field 419 location (r_(row), c_(column)) tothe image processing unit 424. In step 636, the auto-rotate unit 422increments “row” to a row containing a next pixel color required by theimage processing unit 424. In step 638, if “last row” has beentransferred, the method proceeds to step 639, otherwise the methodreturns to step 634. In the preferred embodiment “last row” is “r_(i),”as shown in FIG. 5B. When “last row” has been transferred in step 638,an entire line of portrait_right image data has been transferred to theimage processing unit 424. In step 639 the image processing unit 424performs any required image processing on the transferred image data.Step 640 then decrements “column” to a next pixel column required by theimage processing unit 424. Finally, if in step 642 “last column” has notyet been transferred the method returns to step 632, otherwise themethod ends. In the preferred embodiment “last column” is “c₁,” as shownin FIG. 5B.

In step 644 of FIG. 6D, the auto-rotate unit 422 configures the imageprocessing unit 424 to accept an image data line length corresponding toa landscape image. In step 646, the auto-rotation unit 422 initializes avariable named “row” stored in the working memory 418 to a first pixelrow (i.e. to row r₁), within the image data field 419, required by theimage processing unit 424. In step 648, the auto-rotation unit 422initializes a variable named “column” stored in the working memory 418to a column (i.e. to column c₁) within the image data field 419containing a first pixel color required by the image processing unit424. Next, in step 650, the auto-rotate unit 422 transfers the capturedimage data in the image data field 419 location (r_(row), c_(column)) tothe image processing unit 424. In step 652, the auto-rotate unit 422increments “column” to a column containing a next pixel color requiredby the image processing unit 424. In step 654, if “last column” has beentransferred, the method proceeds to step 655, otherwise the methodreturns to step 650. In the preferred embodiment “last column” is“c_(j−1),” as shown in FIG. 5C. When “last column” has been transferredin step 654, an entire line of landscape image data has been transferredto the image processing unit 424. In step 655 the image processing unit424 performs any required image processing on the transferred imagedata. Step 656 then increments “row” to a next pixel row required by theimage processing unit 424. Finally, if in step 658 “last row” has notyet been transferred the method returns to step 648, otherwise themethod ends. In the preferred embodiment “last row” is “r_(i−1),” asshown in FIG. 5C.

While the present invention has been described with reference to certainpreferred embodiments, those skilled in the art will recognize thatvarious modifications may be provided. For instance, while the preferredembodiment of the present invention selects and processes the capturedimage data as a rectangular array, alternate embodiments could selectand process the image data as an array of tiles rather than lines.Furthermore, by transferring the pixels signals to the image processingunit 424 in a different order, a mirror image or an upside-down image ofthe captured image data can be presented on the image display 100.Lastly, while the preferred embodiment is implemented in software, thoseskilled in the art would readily recognize that a hardware equivalentimplementation would also be acceptable. These and other variations uponand modifications to the preferred embodiment are provided for by thepresent invention which is limited only by the following claims.

1. An apparatus for rotating a display orientation of captured imagedata representative of an object, the apparatus comprising: an imagesensor, for generating said captured image data; an orientation sensorcoupled to said image sensor, for generating a signal corresponding tothe position of the image sensor relative to said object; a memory,having an auto-rotate unit comprising program instructions forselectively transforming said captured image data into rotated imagedata in response to said position signal, said memory coupled to saidimage sensor and to said orientation sensor; and an image processingunit coupled to said memory for executing program instructions stored insaid memory; wherein (a) said image processing unit processes an i-by-jarray of said captured image data and said image sensor generates ani+1-by-j+1 array of said image data, or (b) an image capture unitgenerates an additional row and column of pixels for said captured imagedata from said image sensor.
 2. The apparatus of claim 1, wherein thememory further comprises: an image processing unit comprising programinstructions for transforming one from a group consisting of capturedimage data and portrait image data, into processed image data.
 3. Theapparatus of claim 1, wherein: the signal is a portrait_left signal ifthe image sensor is rotated clockwise from a landscape orientationrelative to the object, and the signal is a portrait_right signal if theimage sensor is rotated counter-clockwise from the landscape orientationrelative to the object; and the auto-rotate unit comprises programinstructions for transforming the captured image data into portrait_leftimage data in response to the portrait_left signal and intoportrait_right image data in response to the portrait_right signal. 4.The apparatus of claim 1, wherein: the signal is a landscape signal ifthe image sensor is positioned in a level orientation relative to theobject; and the auto-rotate unit comprises program instructions fortransforming the captured image data into landscape image data inresponse to the landscape signal.
 5. The apparatus of claim 3, wherein:the image sensor has a top, a bottom, a right side and a left side; theauto-rotate unit program instructions transform the captured image datainto the portrait_left image data by transferring a prior portrait_leftline of image data which starts further toward the bottom of the imagesensor and ends further toward the top of the image sensor, thentransferring a subsequent portrait_left line of image data, locatedcloser to the right side of the image sensor than the priorportrait_left line of image data, and also starting further toward thebottom of the image sensor and ending further toward the top of theimage sensor; and the auto-rotate unit program instructions transformthe captured image data into the portrait_right image data bytransferring a prior portrait_right line of image data which startsfurther toward the top of the image sensor and ends further toward thebottom of the image sensor, then transferring a subsequentportrait_right line of image data, located closer to the left side ofthe image sensor than the prior portrait_right line of image data, andalso starting further toward the top of the image sensor and endingfurther toward the bottom of the image sensor.
 6. The apparatus of claim4, wherein: the image sensor has a top, a bottom, a right side and aleft side; and the auto-rotate unit program instructions transform thecaptured image data into the landscape image data by transferring aprior landscape line of image data which starts further toward the leftside of the image sensor and ends further toward the right side of theimage sensor, then transferring a subsequent landscape line of imagedata, located closer to the bottom of the image sensor than the priorlandscape line of image data, and also starting further toward the leftside of the image sensor and ending further toward the right side of theimage sensor.
 7. The apparatus of claim 3, wherein: the portrait_leftsignal is generated by the orientation sensor if the image sensor isrotated approximately 45° clockwise from the level orientation, and theportrait_right signal is generated by the orientation sensor if theimaging subsystem is rotated approximately 45° counter-clockwise fromthe level orientation.
 8. The apparatus of claim 5, wherein: the priorportrait_left line of image data and the prior portrait_right line ofimage data comprise a “green, red, green, red” pixel pattern; and thesubsequent portrait_left line of image data and the subsequentportrait_right line of image data comprise a “blue, green, blue, green”pixel pattern.
 9. An apparatus for rotating a display orientation ofmulticolor captured image data having an i-by-j pixel matrix with apattern representative of an object, comprising: an image sensor, forgenerating the multicolor captured image data; an input device, forgenerating a portrait_left signal in response to a first user selection,a portrait_right signal in response to a second user selection, and alandscape signal in response to a third user selection; a memory,having: an auto-rotate unit comprising program instructions forselectively transforming the multicolor captured image data intoportrait_left image data in response to the portrait-left signal,portrait_right image data in response to the portrait_right signal, andlandscape image data in response to the landscape signal; and an imageprocessing unit comprising program instructions for transforming theportrait_left image data, the portrait_right image data and thelandscape image data into processed image data; and a processing unit,coupled to the image sensor, to the input device, and to the memory, forexecuting program instructions stored in the memory; wherein said imageprocessing unit changes the number of pixel rows and pixel columns ofthe multicolor captured image data such that, from a defined referencedviewpoint, the portrait left image data, the portrait right image data,and the landscape image data, each includes the an (i−1)-by-(j−1) pixelmatrix having said pattern.
 10. The apparatus of claim 9, wherein theimage processing unit has a first line length for processing theportrait_left image data and the portrait_right image data and a secondline length for processing the landscape image data.
 11. A method forrotating a display orientation of image data representative of anobject, comprising the steps of: generating image data with an imagesensor; identifying an orientation of the image sensor relative to theobject at a time substantially simultaneous with the generating step,where said identifying is performed by an orientation sensor; andselectively transferring data to an image processing unit in response tothe identifying step; wherein said image processing unit rotates saiddisplay orientation of said image data and (a) said image processingunit processes an i-by-j array of said captured image data and saidimage sensor generates an i+1-by-j+1 array of said image data, or (b) animage capture unit generates an additional row and column of pixels forsaid captured image data from said image sensor.
 12. The method of claim11, further comprising the step of: generating an additional row andcolumn of image data.
 13. The method of claim 11, further comprising thestep of correcting defects within the image data caused by defectswithin the image sensor.
 14. The method of claim 11, wherein the imagesensor comprises a top, a right side and a left side, wherein the imagecomprises a “top portion,” and wherein the step of identifying anorientation further comprises the steps of: identifying a portrait_leftorientation, if the left side of the image sensor corresponds to the“top portion” of the object; identifying a portrait_right orientation,if the right side of the image sensor corresponds to the “top portion”of the object; and identifying a landscape orientation, if the top ofthe image sensor corresponds to the “top portion” of the object.
 15. Themethod of claim 11, wherein the step of identifying an orientationfurther comprises the steps of: identifying a portrait_left orientation,in response to a user selection of the portrait_left orientation on aninput device; identifying a portrait_right orientation, in response to auser selection of the portrait_right orientation on the input device;and identifying a landscape orientation, in response to a user selectionof the landscape orientation on the input device.
 16. The method ofclaim 11, wherein the orientation is a portrait_left orientation,wherein the image data is comprised of an array of pixel colors orderedin rows and columns, and wherein the step of selectively transferringcomprises the steps of: initializing a column variable to a first columnof pixel colors required by the image processing unit; initializing arow variable to a row containing a first pixel color required by theimage processing unit; transferring pixel color at an array locationdefined by the row variable and the column variable to and the imageprocessing unit; decrementing the row variable to a row containing anext pixel color required by the image processing unit; returning to thetransferring step, if a row containing a last pixel color has not beentransferred; incrementing the column variable to a next column of pixelcolors required by the image processing unit; and returning to theinitializing a row variable step, if a last column of pixel colors hasnot been transferred.
 17. The method of claim 16, wherein the image datais replaced by defective image sensor information, further comprisingthe step of repeating the steps of claim
 16. 18. The method of claim 16,further comprises the steps of: configuring the image processing unit toaccept an image data line length corresponding to the portrait_leftorientation; and performing image processing on a line of transferredimage data.
 19. The method of claim 11, wherein the orientation is aportrait_right orientation, wherein the image data is comprised of anarray of pixel colors ordered in rows and columns, and wherein the stepof selectively transferring comprises the steps of: initializing acolumn variable to a first column of pixel colors required by the imageprocessing unit; initializing a row variable to a row containing a firstpixel color required by the image processing unit; transferring pixelcolor at an array location defined by the row variable and the columnvariable, to the image processing unit; incrementing the row variable toa row containing a next pixel color required by the image processingunit; returning to the transferring step, if a row containing a lastpixel color has not been transferred; decrementing the column variableto a next column of pixel colors required by the image processing unit;and returning to the initializing a row variable step, if a last columnof pixel colors has not been transferred.
 20. The method of claim 11,wherein the orientation is a landscape orientation, wherein the imagedata is comprised of an array of pixel colors ordered in rows andcolumns, and wherein the step of selectively transferring furthercomprises the steps of: initializing a row variable to a first row ofpixel colors required by the image processing unit; initializing acolumn variable to a column containing a first pixel color required bythe image processing unit; transferring pixel color at an array locationdefined by the row variable and the column variable, to the imageprocessing unit; incrementing the column variable to a column containinga next pixel color required by the image processing unit; returning tothe transferring step, if a column containing a last color pixel has notbeen transferred; incrementing the row variable to a next row of pixelcolors required by the image processing unit; and returning to theinitializing a column variable step, if a last row of pixel colors hasnot been transferred.
 21. An apparatus for rotating a displayorientation of multicolor image data having an i-by-j pixel matrix witha pattern representative of an object, comprising: means for generatingmulticolor image data with an image sensor; orientation sensor means foridentifying an orientation of said image sensor relative to said objectat a time substantially simultaneous with said generating saidmulticolor image data; and means for selectively transferring saidmulticolor image data to an image processing unit in response to saidmeans for identifying; wherein said image processing unit rotates saiddisplay orientation of said multicolor image data for providing rotatedmulticolor image data, and changes the number of pixel rows and pixelcolumns of said multicolor image data such that, from a definedreferenced viewpoint, said rotated multicolor image data includes havingan (i−1)-by-(j−1) pixel matrix said pattern.
 22. The apparatus of claim21, further comprising means for generating an additional row and columnof image data.
 23. The apparatus of claim 21, further comprising meansfor correcting defects within the image data caused by defects withinthe image sensor.
 24. The apparatus of claim 21, wherein the imagesensor comprises a top, a right side and a left side, wherein the imagecomprises a “top portion,” and wherein the means for identifying anorientation further comprises: means for identifying a portrait_leftorientation, if the left side of the image sensor corresponds to the“top portion” of the object; means for identifying a portrait_rightorientation, if the right side of the image sensor corresponds to the“top portion” of the object; and means for identifying a landscapeorientation, if the top of the image sensor corresponds to the “topportion” of the object.
 25. The apparatus of claim 21, wherein theorientation is a portrait_left orientation, wherein the image data iscomprised of an array of pixel colors ordered in rows and columns, andwherein the means for selectively transferring comprises: means forinitializing a column variable to a first column of pixel colorsrequired by the image processing unit; means for initializing a rowvariable to a row containing a first pixel color required by the imageprocessing unit; means for transferring pixel color at an arraylocation, defined by the row variable and the column variable, to theimage processing unit; means for decrementing the row variable to a rowcontaining a next pixel color required by the image processing unit;means for returning to the means for transferring, if a row containing alast pixel color has not been transferred; means for incrementing thecolumn variable to a next column of pixel colors required by the imageprocessing unit; and means for returning to the means for initializing arow variable, if a last column of pixel colors has not been transferred.26. The apparatus of claim 21, wherein the orientation is aportrait_right orientation, wherein the image data is comprised of anarray of pixel colors ordered in rows and columns, and wherein the meansfor selectively transferring comprises: means for initializing a columnvariable to a first column of pixel colors required by the imageprocessing unit; means for initializing a row variable to a rowcontaining a first pixel color required by the image processing unit;means for transferring pixel color at an array location, defined by therow variable and the column variable, to the image processing unit;means for incrementing the row variable to a row containing a next pixelcolor required by the image processing unit; means for returning to themeans for transferring, if a row containing a last pixel color has notbeen transferred; means for decrementing the column variable to a nextcolumn of pixel colors required by the image processing unit; and meansfor returning to the means for initializing a row variable, if a lastcolumn of pixel colors has not been transferred.
 27. The apparatus ofclaim 21, wherein the orientation is a landscape orientation, whereinthe image data is comprised of an array of pixel colors ordered in rowsand columns, and wherein the means for selectively transferringcomprises: means for initializing a row variable to a first row of pixelcolors required by the image processing unit; means for initializing acolumn variable to a column containing a first pixel color required bythe image processing unit; means for transferring pixel color at anarray location, defined by the row variable and the column variable, tothe image processing unit; means for incrementing the column variable toa column containing a next pixel color required by the image processingunit; means for returning to the means for transferring, if a columncontaining a last color pixel has not been transferred; means forincrementing the row variable to a next row of pixel colors required bythe image processing unit; and means for returning to the means forinitializing a column variable, if a last row of pixel colors has notbeen transferred.
 28. A computer useable medium embodying computerreadable program code for causing a computer to rotate a displayorientation of multicolor image data having an i-by-j pixel matrix witha pattern representative of an object, by performing steps comprising:generating said multicolor image data with an image sensor; identifyingan orientation of the image sensor relative to the object at a timesubstantially simultaneous with the generating step, wherein saididentifying of said orientation is performed with an orientation sensor;and selectively transferring image data to an image processing unit inresponse to the identifying step, wherein said image processing unitrotates said display orientation of said multicolor image data forproviding rotated multicolor image data, and changes the number of pixelrows and pixel columns of said multicolor image data such that, from adefined referenced viewpoint, said rotated multicolor image dataincludes having an (i−1)-by-(j−1) pixel matrix said pattern.
 29. Thecomputer useable medium of claim 28, further comprising program code forgenerating an additional row and column of image data.
 30. The computeruseable medium of claim 28, further comprising program code forcorrecting defects within the image data caused by defects within theimage sensor.
 31. The computer useable medium of claim 28, wherein theimage sensor comprises a top, a right side and a left side, wherein theimage comprises a “top portion,” and wherein the program code forperforming the step of identifying an orientation further comprisesprogram code for: identifying a portrait_left orientation, if the leftside of the image sensor corresponds to the “top portion” of the object;identifying a portrait_right orientation, if the right side of the imagesensor corresponds to the “top portion” of the object; and identifying alandscape orientation, if the top of the image sensor corresponds to the“top portion” of the object.
 32. The computer useable medium of claim28, wherein the orientation is a portrait_left orientation, wherein theimage data is comprised of an array of pixel colors ordered in rows andcolumns, and wherein the program code for performing the step ofselectively transferring comprises program code for: initializing acolumn variable to a first column of pixel colors required by the imageprocessing unit; initializing a row variable to a row containing a firstpixel color required by the image processing unit; transferring pixelcolor at an array location, defined by the row variable and the columnvariable, to the image processing unit; decrementing the row variable toa row containing a next pixel color required by the image processingunit; returning to the transferring step, if a row containing a lastpixel color has not been transferred; incrementing the column variableto a next column of pixel colors required by the image processing unit;and returning to the initializing a row variable step, if a last columnof pixel colors has not been transferred.
 33. The computer useablemedium of claim 28, wherein the orientation is a portrait_rightorientation, wherein the image data is comprised of an array of pixelcolors ordered in rows and columns, and wherein the program code forperforming the step of selectively transferring comprises program codefor: initializing a column variable to a first column of pixel colorsrequired by the image processing unit; initializing a row variable to arow containing a first pixel color required by the image processingunit; transferring pixel color at an array location, defined by the rowvariable and the column variable, to the image processing unit;incrementing the row variable to a row containing a next pixel colorrequired by the image processing unit; returning to the transferringstep, if a row containing a last pixel color has not been transferred;decrementing the column variable to a next column of pixel colorsrequired by the image processing unit; and returning to the initializinga row variable step, if a last column of pixel colors has not beentransferred.
 34. The computer useable medium of claim 28, wherein theorientation is a landscape orientation, wherein the image data iscomprised of an array of pixel colors ordered in rows and columns, andwherein the program code for performing the step of selectivelytransferring comprises program code for: initializing a row variable toa first row of pixel colors required by the image processing unit;initializing a column variable to a column containing a first pixelcolor required by the image processing unit; transferring pixel color atan array location, defined by the row variable and the column variable,to the image processing unit; incrementing the column variable to acolumn containing a next pixel color required by the image processingunit; returning to the transferring step, if a column containing a lastcolor pixel has not been transferred; incrementing the row variable to anext row of pixel colors required by the image processing unit; andreturning to the initializing a column variable step, if a last row ofpixel colors has not been transferred.
 35. An apparatus for rotating adisplay orientation of multicolor captured image data having an i-by-jpixel matrix with a pattern representative of an object, comprising: animage sensor, for generating said multicolor captured image data; anorientation sensor coupled to said image sensor, for generating a signalcorresponding to the position of said image sensor relative to saidobject; and a hardware device, having an auto-rotate unit comprisingcircuits for selectively transforming said multicolor captured imagedata into rotated multicolor image data in response to said positionsignal, said hardware device coupled to said image sensor and to saidorientation sensor; wherein, from a defined referenced viewpoint, saidrotated multicolor image data includes an (i−1)-by-(j−1) pixel matrixhaving said pattern.
 36. A method for rotating image data in a digitalimage capture device, comprising: capturing image data with an imagecapture device; detecting one or more orientations of the image capturedevice by a plurality of orientation sensors, wherein a firstorientation by a first orientation sensor of the plurality of theorientation sensors indicates whether the image capture device is in alandscape or a portrait orientation, and a second orientation by asecond orientation sensor of the plurality of the orientation sensorsindicates whether the image capture device is in a level or an off-levelorientation; selecting an orientation from the plurality of orientationsof the image capture device; rotating the captured image data accordingto the selected orientation of the image capture device; and outputtingthe rotated image data to a display device in accordance with theselected orientation.
 37. A digital camera, comprising: an image sensorfor capturing an image; a plurality of orientation sensors, coupled tothe image sensor, adapted to detect one or more orientations of thecaptured image, wherein a first orientation by a first orientationsensor of the plurality of the orientation sensors indicates whether thedigital camera is in a landscape or a portrait orientation, and a secondorientation by a second orientation sensor of the plurality of theorientation sensors indicates whether the digital camera is in a levelor an off-level orientation; an auto-rotate unit, coupled to theplurality of orientation sensors, for selecting an orientation from theplurality of the orientations, and rotating the captured image accordingto the selected orientation; a memory, coupled to the auto-rotate unitand the plurality of orientation sensors, for storing the rotated imageand the selected orientation; and an image processing unit, coupled tothe memory, for outputting the stored rotated image in accordance withthe selected orientation.